import typeOfUtils from '@/utils/type-of-utils'

const htmlElementUtils = {
  /**
   * 获取元素样式
   * @param el {HTMLElement}
   * @param style {String}
   * @return {string}
   */
  getStyle(el, style) {
    if (typeOfUtils.isNotHTMLDocument(el)) {
      throw new Error('el元素不是dom')
    }
    return window.getComputedStyle(el, null).getPropertyValue(style)
  },
  /**
   *
   * @param el {HTMLElement}
   * @param child {HTMLElement}
   */
  addChild(el, child) {
    if (typeOfUtils.isNotHTMLDocument(el)) {
      throw new Error('父元素不是dom')
    }
    if (typeOfUtils.isNotHTMLDocument(child)) {
      throw new Error('子元素不是dom')
    }
    el.appendChild(child)
  },
  /**
   *
   * @param el {HTMLElement}
   * @param child {HTMLElement}
   */
  removeChild(el, child) {
    if (typeOfUtils.isNotHTMLDocument(el)) {
      throw new Error('父元素不是dom')
    }
    if (typeOfUtils.isNotHTMLDocument(child)) {
      throw new Error('子元素不是dom')
    }
    if (this.hasChildren(el, child)) {
      el.removeChild(child)
    }
  },
  /**
   * 判断是不是有这个子元素
   * @param ele {HTMLElement}
   * @param child {HTMLElement}
   * @return {Boolean|*}
   */
  hasChildren(ele, child) {
    // 判断是不是元素
    if (ele !== child) {
      return ele.contains(child)
    } else {
      throw new Error('不是父子元素')
    }
  }
}

export default htmlElementUtils
